ComponentOne PdfViewer for UWP
Key Features / Opening Potentially Protected Files
In This Topic
    Opening Potentially Protected Files
    In This Topic

    When giving the end-user the ability to open a PDF file, sometimes you can’t predict whether or not the file will be password protected or not. The following sample method demonstrates how to perform this check and open the document accordingly.

    Visual Basic
    Copy Code
    ' open an existing PDF file
    Private Sub _btnOpen_Click(sender As Object, e As RoutedEventArgs)
    Dim dlg = New OpenFileDialog()
    dlg.Filter = "Pdf files (*.pdf)|*.pdf"
    If dlg.ShowDialog().Value
    Then Dim ms = New System.IO.MemoryStream()
    Using stream = dlg.File.OpenRead()
    stream.CopyTo(ms)
    End Using LoadProtectedDocument(ms, Nothing)
    End If
    End Sub
    

     

    C#
    Copy Code
    // open an existing PDF file
    void _btnOpen_Click(object sender, RoutedEventArgs e)
    {
    var dlg = new OpenFileDialog();
    dlg.Filter = "Pdf files (*.pdf)|*.pdf";
    if (dlg.ShowDialog().Value)
     {
      var ms = new System.IO.MemoryStream();
      using (var stream = dlg.File.OpenRead())
       {
         stream.CopyTo(ms);
       }
       LoadProtectedDocument(ms, null);
      }
    }
    

    If a protected file is attempted to be read, then we will call the LoadProtectedDocument method. Calling this method with null for a password will open unprotected files. If the file is password-protected (encrypted), an Exception will be thrown and caught. The user will then be prompted for the actual password and the method will call itself recursively.

    Visual Basic
    Copy Code
    ' loads password-protected Pdf documents.
     Private Sub LoadProtectedDocument(stream As System.IO.MemoryStream, password As String)
     Try
     stream.Position = 0
     _viewer.LoadDocument(stream, password)
     Catch x As Exception
     'if (x.Message.IndexOf("password") > -1)
     '{
     Dim msg = "This file seems to be password-protected." & vbCr & vbLf & "Please provide the password and try again." C1.Silverlight.C1PromptBox.Show(msg, "Enter Password", Function(text, result)
     If result = MessageBoxResult.OK Then
     ' try again using the password provided by the user
     LoadProtectedDocument(stream, text)
     End If
    '}
    'else
    '{
    ' throw;
    '}
    End Function)
    End Try
    End Sub
    

     

    C#
    Copy Code
    // loads password-protected Pdf documents.
    void LoadProtectedDocument(System.IO.MemoryStream stream, string password)
       {
        try
        {
         stream.Position = 0;
         _viewer.LoadDocument(stream, password);
       } 
       catch (Exception x)
       {
         //if (x.Message.IndexOf("password") > -1)
         //{
            var msg = "This file seems to be password-protected.\r\nPlease provide the password and try again.";
            C1.Silverlight.C1PromptBox.Show(msg, "Enter Password", (text, result) =>
              {
              if (result == MessageBoxResult.OK)
              {
               // try again using the password provided by the user
               LoadProtectedDocument(stream, text);
              }
           });
        //}
       //else
       //{
        // throw;
       //}
       }
    }